﻿//------------------------------------------------------------------------------
// ╭─────────────────────────────╮
// │ ╭─╮     ╭─╮              TM │   ╠═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╣
// │ │ │     │ │                 │                                           ☺  
// │ │ ╰───╮ │ │ ╭─────╮ ╭─────╮ │     Name:Wedn.Net 整个网站基控制器     ♮ ♪ ♩
// │ │ ╭─╮ │ │ │ │ ╭─╮ │ │ ╭─╮ │ │                                    ♫ ♭      
// │ │ ╰─╯ │ │ │ │ ╰─╯ │ │ ╰─╯ │ │     Author:iceStone               ♬ ♪       
// │ └─────╯ └─╯ ╰─────╯ ╰───╮ │ │     Chinese:汪磊                              
// │                     ┌───╯ │ │                                              
// │                     ╰─────╯ │   ╠═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╣
// ╰─────────────────────────────╯                                              
//------------------------------------------------------------------------------
using Wedn.Net.Common;
using Wedn.Net.Model;
using Wedn.Net.Utility;

namespace Wedn.Net.Controller.Base
{
    /// <summary>
    /// 整个网站基控制器
    /// </summary>
    public class BaseController : System.Web.Mvc.Controller
    {

        /// <summary>
        /// 业务逻辑层对象
        /// </summary>
        protected IBLL.IBLLFactory BllInstance { get { return BLLFactory.BLLFactory.Instance; } }

        #region CurrentUser
        private User _currentUser;
        /// <summary>
        /// 当前用户对象实体
        /// </summary>
        protected User CurrentUser
        {
            get { return _currentUser ?? (_currentUser = SessionHelper.GetSession<User>("CurrentUser")); }
        }
        #endregion

        #region 设置信息字典 +string this[string key]
        /// <summary>
        /// 设置信息字典
        /// </summary>
        /// <param name="key">键</param>
        /// <returns>值</returns>
        public string this[string key]
        {
            get { return Setting.Get(key); }
            set { Setting.Set(key, value); }
        }
        #endregion

        #region 执行未知的Action +override void HandleUnknownAction(string actionName)
        /// <summary>
        /// 执行未知的Action
        /// </summary>
        /// <param name="actionName">行为名称</param>
        protected override void HandleUnknownAction(string actionName)
        {
            ShowNotFoundPage();
        }
        #endregion

        #region 显示未找到(404)页面 void ShowNotFoundPage()
        /// <summary>
        /// 显示未找到(404)页面
        /// </summary>
        protected void ShowNotFoundPage()
        {
            Response.Clear();
            Response.StatusCode = 404;
            Response.StatusDescription = "Not Found";
            Response.WriteFile(Server.MapPath("/content/html/404.html"));
            Response.End();
        }
        #endregion

        #region 显示服务器错误(500)页面 void ShowErrorPage()
        /// <summary>
        /// 显示服务器错误(500)页面
        /// </summary>
        protected void ShowErrorPage()
        {
            Response.Clear();
            Response.StatusCode = 500;
            Response.StatusDescription = "Internal Server Error";
            Response.WriteFile(Server.MapPath("/content/html/500.html"));
            Response.End();
        }
        #endregion

    }

    ///// <summary>
    ///// 控制器生成对象拓展
    ///// </summary>
    //public static class ControllerBuilderExtensions
    //{
    //    #region 控制器生成对象注册默认命名空间拓展方法 +static void InitDefaultNamespace(this System.Web.Mvc.ControllerBuilder cb)
    //    /// <summary>
    //    /// 控制器生成对象注册默认命名空间拓展方法
    //    /// </summary>
    //    /// <param name="cb">控制器生成对象</param>
    //    public static void InitDefaultNamespace(this System.Web.Mvc.ControllerBuilder cb)
    //    {
    //        cb.DefaultNamespaces.Clear();
    //        cb.DefaultNamespaces.Add("Wedn.Net.Controller");
    //    }
    //    #endregion
    //}
}
